package com.zhitan.ems.alarm.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zhitan.ems.framework.core.mp.base.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.ems.common.annotation.Excel;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModelProperty;

/**
 * 报警规则配置表
 * 
 * @author zhitan
 * 
 * @date 2025-09-26 21:25:31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ems_alarm_rules")
public class AlarmRulesEntity extends BaseEntity {
	private static final long serialVersionUID = 1L;
	/**
	 * 报警规则ID
	 */
	@TableId
	@ApiModelProperty("报警规则ID")
	@Excel(name = "报警规则ID")
	private String ruleId;
	/**
	 * 提醒类型 0 点位数据 10 设备报警 11 groupId
	 */
	@ApiModelProperty("提醒类型 0 点位数据 10 设备报警 11 groupId ")
	@Excel(name = "提醒类型 0 点位数据 10 设备报警 11 groupId ")
	private Integer alarmKind;
	/**
	 * 协议类型: mqtt, modbus, iec104, websocket
	 */
	@ApiModelProperty("协议类型: mqtt, modbus, iec104, websocket")
	@Excel(name = "协议类型: mqtt, modbus, iec104, websocket")
	private String protocol;
	/**
	 * 设备标识符（支持通配符*）
	 */
	@ApiModelProperty("设备ID")
	private Long deviceId;
	@ApiModelProperty("设备标识符（支持通配符*）")
	@Excel(name = "设备标识符（支持通配符*）")
	private String deviceCode;
	@ApiModelProperty("设备名称")
	private String deviceName;
	/**
	 * 数据点地址（支持通配符*）
	 */
	@ApiModelProperty("数据点地址（支持通配符*）")
	@Excel(name = "数据点地址（支持通配符*）")
	private String address;
	@ApiModelProperty("间隔时间：10 10分钟 20 1小时 30 1天")
	@Excel(name = "间隔时间类型")
	private Integer intervalType;
	@ApiModelProperty("业务类型:综合能耗0 碳排放量1 费用总量2")
	@Excel(name = "业务类型")  
	private String dataType;
	@ApiModelProperty("数据属性ID")
	private Long dataPropertyId;
	private String propertyName;
	private String dataCode;
	private String dataFormCode;
	
	@ApiModelProperty("比较类型：0无  1 大于 2 区间 3小于")
	private Integer compareType;
	/**
	 * 最小阈值
	 */
	@ApiModelProperty("最小阈值")
	@Excel(name = "最小阈值")
	private Double minThreshold;
	/**
	 * 最大阈值
	 */
	@ApiModelProperty("最大阈值")
	@Excel(name = "最大阈值")
	private Double maxThreshold;
	/**
	 * 报警级别: LOW, MEDIUM, HIGH, CRITICAL
	 */
	@ApiModelProperty("报警级别: LOW, MEDIUM, HIGH, CRITICAL")
	@Excel(name = "报警级别: LOW, MEDIUM, HIGH, CRITICAL")
	private String alarmLevel;
	/**
	 * 报警消息模板
	 */
	@ApiModelProperty("报警消息模板")
	@Excel(name = "报警消息模板")
	private String messageTemplate;
	/**
	 * 是否启用
	 */
	@ApiModelProperty("是否启用")
	@Excel(name = "是否启用")
	private Integer enabled;
	/**
	 * 规则描述
	 */
	@ApiModelProperty("规则描述")
	@Excel(name = "规则描述")
	private String description;
	/**
	 * 
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "创建日期", width = 30, dateFormat = "yyyy-MM-dd")
	private Date createAt;
	/**
	 * 
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
	private Date updateAt;
	
	@ApiModelProperty("分组ID")
	@Excel(name = "分组ID")
	private Long groupId;
	/**
	 * 分组名称
	 */
	@ApiModelProperty("分组名称")
	@Excel(name = "分组名称")
	private String groupName;
	/**
	 * 创建者
	 */
	@ApiModelProperty("创建者")
	@Excel(name = "创建者")
	private String createdBy;
	/**
	 * 更新者
	 */
	@ApiModelProperty("更新者")
	@Excel(name = "更新者")
	private String updatedBy;

}